let u: undefined = undefined;
let n: null = null;


let firstName:string = 'mouddong';
firstName.trim();
let num: number = undefined; //
let num1: number = null; // undefined和null  是所有类型的子类型


//不确定类型
let notSure:any = '';
notSure = 10;
notSure = true;

//一个类型声明为any之后，不再提示其拥有的方法

//unitypes 联合类型 即可以赋值为字符串或者赋值为 number
let stringOrNumber :string | number  = 'string';
stringOrNumber = 234;  //赋值为number 之后 不再提示 字符串拥有的方法

let arrayOfNumbers: Array<number> = [1,2,3];  //第一种声明的方式
let arrayOfNumbers1: string[] = ['dfjkd','fdkl'] //第二种方式

//类数组 比如 下

function test() {
  console.log(arguments)  //这里的arguments 为类数组，但是不具备 数组的方法，同时也不能赋值给其他数组
  // const newArray: any[] = arguments  //这句代码会报错
}

//Tuple 元祖类型
let user: [string,number] = ['name',1] ;// 限定了数组中的数据类型，并且数组的数量也限定死了

// user = ['fjdk',1,1]  多一个少一个数据都是会报错的